import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import path from "path";
const common = require("./build/common.js");
common.package.name = common.package.name.replaceAll('@datav-design/','')
import copy from "rollup-plugin-copy"; //引入插件 和项目无关是为了打包后拷贝文件到可视化目录下 避免手动复制粘贴麻烦
// https://vitejs.dev/config/
export default defineConfig({
  base: "./",
  plugins: [
    vue(),
    copy({
      targets: [
        {
          src: "public/com-echarts",
          dest: `${path.resolve("../../")}/datav-design/public/com`,
        }, //执行拷贝
      ],
      verbose: true, // 打印日志
      flatten: false, // 删除目标目录
      hook: "writeBundle", // 打包写入磁盘后再执行
    }),
  ],
  define: common.define,
  // 别名
  resolve: {
    // 别名
    alias: {
      "@": path.resolve(__dirname, "src"),
    },
  },
  build: {
    cssCodeSplit: true, // 启用/禁用 CSS 代码拆分 禁用后 css拆成独立文件
    sourcemap: true, // 是否打包sourcemap
    /** 正常打包项目 start*/
    // 指定输出路径（相对于 项目根目录).
    /** 正常打包项目 end*/

    /** 打包成库文件 start*/
    rollupOptions: {
      // 确保外部化处理那些你不想打包进库的依赖
      external: ["vue"],
      output: {
        assetFileNames: `${common.package.name}.[ext]`,
        // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
        globals: {
          vue: "Vue",
        },
      },
    },
    lib: {
      // 入口
      entry: `src/install/index.js`,
      // 暴露的全局变量
      name: common.package.name,
      // 输出的包文件名，默认 fileName 是 package.json 的 name 选项
      fileName: (format) => `${common.package.name}-${format}.js`,
    },
    // 指定输出路径（相对于 项目根目录).
    outDir: `public/${common.package.name}`,
    /** 打包成库文件 end*/
  },
});
